song.yz@foxmail.com wechat: math-box

统计机器学习

贝叶斯决策理论



贝叶斯分类本质上是考虑先验概率的似然函数最优,其规则为 \[\hat y = \mathop {\arg \max }\limits_{{c_i}} \left\{ {\frac{{P\left( {{\mathbf{x}}|{c_i}} \right)P\left( {{c_i}} \right)}}{{P\left( {\mathbf{x}} \right)}}} \right\}\] 对于C_i类,其在x处概率密度为 \[\begin{gathered} {f_i}\left( {\mathbf{x}} \right) = f\left( {{\mathbf{x}}|{{\mathbf{\mu }}_i},{{\mathbf{\Sigma }}_i}} \right) \hfill \\ \quad = \frac{1}{{{{\left( {\sqrt {2\pi } } \right)}^d}\sqrt {\left| {{{\mathbf{\Sigma }}_i}} \right|} }}\exp \left\{ { - \frac{{{{\left( {{\mathbf{x}} - {{\mathbf{\mu }}_i}} \right)}^T}{\mathbf{\Sigma }}_i^{ - 1}\left( {{\mathbf{x}} - {{\mathbf{\mu }}_i}} \right)}}{2}} \right\} \hfill \\ \end{gathered} \] 后验概率密度为 \[P\left( {{c_i}|{\mathbf{x}}} \right) = \frac{{{f_i}\left( {\mathbf{x}} \right)P\left( {{c_i}} \right)}}{{\Sigma _{j = 1}^k{f_j}\left( {\mathbf{x}} \right)P\left( {{c_j}} \right)}}\]

对于类别变量,有两种策略。第一种方法采用“data mining and analysis”中描述方法进行处理。第二种方法同样可以采取哑变量的手段进行处理。 不过在类别较多时,增加哑变量个数可能会较多。增加哑变量效果如何有待于进一步验证。 如果每种属性符合正态分布,,对判别函数取对数,得到 \[{{\mathbf{g}}_i}\left( {\mathbf{x}} \right) = \ln \left( {P\left( {{\mathbf{x}}|{c_i}} \right)P\left( {{c_i}} \right)} \right) = \ln P\left( {{\mathbf{x}}|{c_i}} \right) + \ln P\left( {{c_i}} \right)\] 进一步的有 \[\begin{gathered} {{\mathbf{g}}_i}\left( {\mathbf{x}} \right) = - \frac{1}{2}{{\mathbf{x}}^T}{\mathbf{\Sigma }}_i^{ - 1}{\mathbf{x}} + \frac{1}{2}{{\mathbf{x}}^T}{\mathbf{\Sigma }}_i^{ - 1}{{\mathbf{u}}_i} - \frac{1}{2}{\mathbf{u}}_i^T{\mathbf{\Sigma }}_i^{ - 1}{{\mathbf{u}}_i} + \frac{1}{2}{\mathbf{u}}_i^T{\mathbf{\Sigma }}_i^{ - 1}{\mathbf{x}} \hfill \\ \quad \quad \quad + \ln P\left( {{c_i}} \right) - \frac{l}{2}\ln 2\pi - \frac{1}{2}\ln \left| {{{\mathbf{\Sigma }}_i}} \right| \hfill \\ \end{gathered} \] 可以看到,如果特征是二维的,则以上决策曲线为二次曲线。一般情况下,特征都是多维的,因此决策面是(多维)超二次曲面。从以上可以看到Bayes和QDA之间的关系。

其中参数可以通过极大似然估计得到。设\({{\mathbf{x}}_1},{{\mathbf{x}}_2}, \cdots ,{{\mathbf{x}}_N}\)是从 概率密度函数\(P\left( {x;{\mathbf{\theta }}} \right)\)中随机抽取的样本,得到联合概率密度函数 \(P\left( {X;{\mathbf{\theta }}} \right)\) 则有 \[P\left( {X;{\mathbf{\theta }}} \right) = \mathop \prod \limits_{k = 1}^N P\left( {{{\mathbf{x}}_k};{\mathbf{\theta }}} \right)\] 这是\({\mathbf{\theta }}\)的一个函数,也称为\({\mathbf{\theta }}\)关于X的似然函数。 用极大似然估计\({\mathbf{\theta }}\),即 \[{{{\mathbf{\hat \theta }}}_{ML}} = \arg \mathop {\max }\limits_{\mathbf{\theta }} \mathop \prod \limits_{k = 1}^N P\left( {{{\mathbf{x}}_k};{\mathbf{\theta }}} \right)\] 为了得到极大似然估计,必须对其梯度为零,即 \[\frac{{\partial \mathop \prod \limits_{k = 1}^N P\left( {{{\mathbf{x}}_k};{\mathbf{\theta }}} \right)}}{{\partial {\mathbf{\theta }}}} = {\mathbf{0}}\] 由于对数函数的单调性,定义对数似然函数为 \[L\left( {\mathbf{\theta }} \right) = \ln \mathop \prod \limits_{k = 1}^N P\left( {{{\mathbf{x}}_k};{\mathbf{\theta }}} \right)\] 因此等价于 \[\frac{{\partial L\left( {\mathbf{\theta }} \right)}}{{\partial {\mathbf{\theta }}}} = \sum\limits_{k = 1}^N {\frac{1}{{P\left( {{{\mathbf{x}}_k};{\mathbf{\theta }}} \right)}}\frac{{\partial P\left( {{{\mathbf{x}}_k};{\mathbf{\theta }}} \right)}}{{\partial \partial {\mathbf{\theta }}}} = {\mathbf{0}}} \] 以上要计算\({\mathbf{\Sigma }}\)矩阵的逆和行列式。

这里对协方差矩阵进行LDL分解,分解过程为 \[ \begin{array}{l} d_1 = a_{11} \\ \left. \begin{array}{l} g_{ij} = a_{ij} - \sum\limits_{k = 1}^{j - 1} {g_{ik} l_{jk} } \left( {j = 1, \cdots ,i - 1} \right) \\ l_{ij} = \frac{{g_{ij} }}{{d_j }}\left( {j = 1, \cdots ,i - 1} \right) \\ d_i = a_{ii} - \sum\limits_{k = 1}^{i - 1} {g_{ik} l_{ik} } \\ \end{array} \right\}i = 2, \cdots ,n \\ \end{array} \]
由于协方差已经经行了LDL分解,因此其矩阵的行列式就是 \[\det \left( {\mathbf{\Sigma }} \right) = \mathop \prod \limits_i {D_{ii}}\]

协方差矩阵是对称正定矩阵,因此其逆矩阵的计算,也可以在LDL基础上进行。先进行下三角矩阵的逆运算。
      a11                   b11            
      a21 a22               b21 b22           
      a31 a32 a33           b31 b32 b33       
      a41 a42 a43 a44       b41 b42 b43 b44   
      a51 a52 a53 a54 a55   b51 b52 b53 b54 b55  
      c11
      c21 c22
      c31 c32 c33
      c41 c42 c43 c44
      c51 c52 c53 c54 c55
      
      0+a(4,2)*b(2,2)+a(4,3)*b(3,2)+a(4,4)*b(4,2)+0=0
        a(4,4)*b(4,2)= a(4,k)*b(k,2)  k=2,4
可以按照以上规则,得到下三角矩阵运算。然后上三角矩阵运算可以先转置为下三角矩阵,再转置回去。 \[{{\mathbf{\Sigma }}^{ - 1}} = {\left[ {{{\left( {{{\mathbf{L}}^T}} \right)}^{ - 1}}} \right]^T}\left[ {{{\mathbf{D}}^{ - 1}}} \right]\left[ {{{\left( {{{\mathbf{L}}^T}} \right)}^{ - 1}}} \right]\]